// 非常好的思路 摘自https://www.cnblogs.com/Melville/p/19228211
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

int main() {
  int n;   // 孩子数量
  ll x, y; // 小糖果价值x，大糖果价值y
  cin >> n >> x >> y;

  vector<int> candy(n); // 每个孩子能分配的大糖果数量上限
  for (int i = 0; i < n; ++i)
    cin >> candy[i];

  sort(candy.begin(), candy.end()); // 按大糖果数量上限排序

  ll ans = 0;      // 总的大糖果分配数量

  ll w = candy[0] * y; // 最优目标值：最小孩子的大糖果总重量

  for (int i = 0; i < n; ++i) {
    // 当前孩子如果全部分配大糖果的总价值
    ll current_w = candy[i] * y;

    // 当前孩子需要减少的价值量（相对于最优目标值）
    ll dif = current_w - w;

    // 检查是否能通过换成小糖果来调整：dif必须能被(y-x)整除
    if (dif % (y - x) != 0) {
      puts("-1"); // 无法整除，无解
      return 0;
    }

    // 计算需要分配的小糖果数量
    ll num = dif / (y - x);

    // 检查小糖果数量是否超过大糖果数量上限
    if (num > candy[i]) {
      puts("-1"); // 小糖果数量过多，无解
      return 0;
    }

    // 当前孩子实际分配的大糖果数量 = 上限 - 小糖果数量
    ans += candy[i] - num;
  }

  cout << ans << '\n'; // 输出总的大糖果分配数量

  return 0;
}